{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=5><div dir=rtl align=center>\n",
        "<font face=\"IranNastaliq\" size=5>\n",
        "به نام خدا\n",
        "</font>\n",
        "<br>\n",
        "<font size=3>\n",
        "دانشگاه صنعتی شریف - دانشکده مهندسی کامپیوتر\n",
        "</font>\n",
        "<br>\n",
        "<font color=blue size=5>\n",
        "مقدمه‌ای بر یادگیری ماشین\n",
        "</font>\n",
        "<br>\n",
        "<hr/>\n",
        "<font color=red size=6>\n",
        "فصل اول: محاسبات و بهینه سازی\n",
        "</font>\n",
        "<br>\n",
        "نویسندگان:‌ پرناز بابلیان، کوروش مسلمی\n",
        "<hr>\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "RWK755-FnxSb"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>2.مشتق، گرادیان و قاعده زنجیره ای</font>\n",
        "<br>\n",
        "در این بخش به یادآوری مباحثی از ریاضی 1 و 2 می پردازیم. \n",
        "\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "mM1BLdxOhqvs"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>1.2.مشتق</font>\n",
        "<br>\n",
        "در ساده ترین تعریف مشتق یک تابع نرخ تغییرات آن نسبت به آرگومان هایش را نشان می دهد. مشتق تابع f تابعی است به نام \n",
        "$f^{'}$\n",
        "که به صورت زیر تعریف می شود:\n",
        "\n",
        "<br>\n",
        "$$f'(x) = \\lim_{h \\rightarrow 0} \\frac{f(x+h) - f(x)}{h}.$$\n",
        "\n",
        "این حد به ما می گوید نسبت تغییر مقدار تابع،\n",
        "$f(x + h) - f(x)$\n",
        "،\n",
        "به تغییر اعمال شده،\n",
        "$h$\n",
        "،\n",
        "\n",
        "این حد به ما می گوید نسبت تغییر مقدار تابع،\n",
        "$f(x + h) - f(x)$\n",
        "،\n",
        "به تغییر اعمال شده،\n",
        "$h$\n",
        "،\n",
        "وقتی h به صفر میل می کند به چه مقداری همگرا می شود. اگر حاصل متناهی باشد گوییم f در xمشتق پذیر است.\n",
        " در ادامه این همگرایی را برای تابع\n",
        "$f(x)=3x^2-4x$\n",
        "در\n",
        "$x=1$\n",
        "به صورت عددی بررسی می کنیم.\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "p9QMN2PUtWA0"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "def f(x):\n",
        "    return 3 * x ** 2 - 4 * x\n",
        "\n",
        "for h in 10.0**np.arange(-1, -6, -1):\n",
        "    print(f'h={h:.5f}, numerical limit={(f(1+h)-f(1))/h:.5f}')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2JtmfTjhWmmh",
        "outputId": "f9bce106-90ba-400c-fa5f-86c7479962ac"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "h=0.10000, numerical limit=2.30000\n",
            "h=0.01000, numerical limit=2.03000\n",
            "h=0.00100, numerical limit=2.00300\n",
            "h=0.00010, numerical limit=2.00030\n",
            "h=0.00001, numerical limit=2.00003\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "در کتب مختلف نماد های متفاوتی برای مشتق گیری استفاده می شود که همگی معادل هستند.اگر قرار دهیم\n",
        "$y=f(x)$\n",
        "نماد های\n",
        "$\\frac{dy}{dx}, \\; \\frac{d}{dx} f(x)$\n",
        "را نماد های لایب نیتس و\n",
        "علامت پریم ('y)\n",
        " نیز نماد نیوتن برای مشتق می نامند. به عبارت دیگر:\n",
        "\n",
        " $$\n",
        " f'(x) = y' = \\frac{dy}{dx} = \\frac{df}{dx} = \\frac{d}{dx} f(x) = Df(x) = D_x f(x)\n",
        " $$\n",
        "\n",
        " نماد های\n",
        " $\\frac{d}{dx}$\n",
        " و\n",
        " $D$\n",
        " عملگرهای دیفرانسیل نامیده می شوند. در ادامه مشتق چند تابع متداول آمده است:\n",
        "\n",
        " $$\n",
        "\\begin{split}\\begin{aligned} \\frac{d}{dx} C & = 0 && \\text{for any constant $C$} \\\\ \\frac{d}{dx} x^n & = n x^{n-1} && \\text{for } n \\neq 0 \\\\ \\frac{d}{dx} e^x & = e^x \\\\ \\frac{d}{dx} \\ln x & = x^{-1} \\end{aligned}\\end{split}\n",
        " $$\n",
        "\n",
        "همچنین قوانین زیر برای مشتق گیری سریع تر به ما کمک می کنند:\n",
        "\n",
        "$$\n",
        "\\begin{split}\\begin{aligned} \\frac{d}{dx} [C f(x)] & = C \\frac{d}{dx} f(x) && \\text{Constant multiple rule} \\\\ \\frac{d}{dx} [f(x) + g(x)] & = \\frac{d}{dx} f(x) + \\frac{d}{dx} g(x) && \\text{Sum rule} \\\\ \\frac{d}{dx} [f(x) g(x)] & = f(x) \\frac{d}{dx} g(x) + g(x) \\frac{d}{dx} f(x) && \\text{Product rule} \\\\ \\frac{d}{dx} \\frac{f(x)}{g(x)} & = \\frac{g(x) \\frac{d}{dx} f(x) - f(x) \\frac{d}{dx} g(x)}{g^2(x)} && \\text{Quotient rule} \\end{aligned}\\end{split}\n",
        "$$\n",
        "\n",
        "اکنون آماده ایم مشتقی که به صورت عددی حساب کردیم را به صورت تحلیلی محاسبه کنیم:\n",
        "\n",
        "$$\n",
        "\\frac{d}{dx} [3 x^2 - 4x] = 3 \\frac{d}{dx} x^2 - 4 \\frac{d}{dx} x = 6x - 4.\n",
        "$$\n",
        "\n",
        "که در \n",
        "$x=1$\n",
        "همان 2 است.همچنین در پایتون نیز می توانیم به صورت خودکار و نمادین این مشتق گیری را انجام دهیم.\n",
        "\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "OtnIQNn7i-hE"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sympy import *\n",
        "x = Symbol('x', real=True)\n",
        "f = 3*x**2 - 4*x\n",
        "\n",
        "dfdx = f.diff(x) # <- yes, taking derivatives is this easy!\n",
        "\n",
        "print(\"f'(x) =\", latex(simplify(dfdx)))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "hR6yI9nLQaQX",
        "outputId": "fc576c4d-22a2-41c2-b378-ddb999a913b3"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "f'(x) = 6 x - 4\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>2.2.مشتق های جزئی و گرادیان</font>\n",
        "<br>\n",
        "\n",
        "در این قسمت ابتدا تعمیم تعریف قبلی برای توابع چند متغیره را بیان می کنیم. فرض  کنیم تابع\n",
        "$y = f(x_1, x_2, \\ldots, x_n)$\n",
        "یک تابع n متغیره باشد. مشتق جزئی y نسبت به i امین پارامتر ($x_i$)\n",
        "به صورت زیر تعریف می شود:\n",
        "\n",
        "$$\n",
        "\\frac{\\partial y}{\\partial x_i} = \\lim_{h \\rightarrow 0} \\frac{f(x_1, \\ldots, x_{i-1}, x_i+h, x_{i+1}, \\ldots, x_n) - f(x_1, \\ldots, x_i, \\ldots, x_n)}{h}.\n",
        "$$\n",
        "\n",
        "برای محاسبه\n",
        "$\\frac{\\partial y}{\\partial x_i}$\n",
        "پارامتر های\n",
        "$x_1, \\ldots, x_{i-1}, x_{i+1}, \\ldots, x_n$\n",
        "را ثابت گرفته و مشتق y نسبت به\n",
        "$x_i$\n",
        "را محاسبه می کنیم. مشابه قبل نماد های زیر معادل هستند:\n",
        "\n",
        "$$\\frac{\\partial y}{\\partial x_i} = \\frac{\\partial f}{\\partial x_i} = \\partial_{x_i} f = \\partial_i f = f_{x_i} = f_i = D_i f = D_{x_i} f.$$\n",
        "\n",
        "<br>\n",
        "\n",
        "مثال) اگر\n",
        "$w = f(x,y,z,t)$\n",
        "در این صورت:\n",
        "$$\\frac{\\partial^7 w}{∂x\\;∂y\\;∂z\\;∂^3x\\;∂t} = f_{txxxzyx}(x,y,z,t)$$\n",
        "\n",
        "<br>\n",
        "\n",
        "مثال) اگر\n",
        "$f(x,y,z) = (sinx)y-z^2$\n",
        "در این صورت:\n",
        "$$f_x(x,y,z) = y(cosx) \\qquad f_y(x,y,z)=sinx \\qquad f_z(x,y,z)=-2z$$\n",
        "\n",
        "<br>\n",
        "\n",
        "مثال) می خواهیم\n",
        "$\\frac{\\partial^7}{\\partial x\\partial y^2\\partial z^4} e^{x y z}$\n",
        "را با پایتون محاسبه کنیم.\n",
        "\n",
        "</div></font>\n",
        "\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "_ZJatcTKWGjq"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "x, y, z = symbols('x y z')\n",
        "expr = exp(x*y*z)\n",
        "diff(expr, x, y, 2, z, 4)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 39
        },
        "id": "Wq3wqEShQi4v",
        "outputId": "d86140dd-5ecc-465e-a5e5-b3acb73581ab"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "x**3*y**2*(x**3*y**3*z**3 + 14*x**2*y**2*z**2 + 52*x*y*z + 48)*exp(x*y*z)"
            ],
            "text/latex": "$\\displaystyle x^{3} y^{2} \\left(x^{3} y^{3} z^{3} + 14 x^{2} y^{2} z^{2} + 52 x y z + 48\\right) e^{x y z}$"
          },
          "metadata": {},
          "execution_count": 2
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "\n",
        "اکنون آماده ایم تا گرادیان را تعریف کنیم. \tفرض کنید \n",
        "\t$f$\n",
        "تابعی \n",
        "\t$n$\n",
        "متغیره به صورت \n",
        "\t\\begin{align*}\n",
        "\t\tf&:\\mathbb{R}^n\\longrightarrow \\mathbb{R}\\\\\n",
        "\t\tf&:=f(x_1,x_2,\\cdots ,x_n)\n",
        "\t\\end{align*}\n",
        "باشد آنگاه \n",
        "گرادیان \n",
        "$f$ \n",
        "را به صورت زیر تعریف می‌کنیم\n",
        "\n",
        "$$\\nabla_{\\mathbf{x}} f(\\mathbf{x})=(\\frac{\\partial f}{\\partial x_1},\\frac{\\partial f}{\\partial x_2},\\cdots,\\frac{\\partial f}{\\partial x_n} )^T$$\n",
        "بنابراین \n",
        "$\\nabla_{\\mathbf{x}} f(\\mathbf{x})$\n",
        "برداری در \n",
        "$\\mathbb{R}^n$\n",
        "خواهد بود. در مواقعی که ابهامی نباشد به جای\n",
        "$\\nabla_{\\mathbf{x}} f(\\mathbf{x})$\n",
        "از نماد\n",
        "$∇f$\n",
        "استفاده می کنیم.\n",
        "\n",
        "مثال) \t\t‌فرض کنید \n",
        "\t\t$$f(x_1,x_2)=\\dfrac{1}{x_1}-4x_{2}$$\n",
        "\t\tآنگاه بردار گرادیان تابع\n",
        "\t\t$ f $\n",
        "\t\tبه صورت زیر خواهد بود\n",
        "\t\t$$\\nabla f=(\\frac{\\partial f}{\\partial x_1},\\frac{\\partial f}{\\partial x_2})^T$$\n",
        "\t\tکه در آن\n",
        "\t\t$$\\frac{\\partial f}{\\partial x_1}=\\frac{\\partial (\\dfrac{1}{x_1}-4x_{2})}{\\partial x_1}=-\\dfrac{1}{x_1^2}\\quad ,\\quad \n",
        "\t\t\\frac{\\partial f}{\\partial x_1}=\\frac{\\partial (\\dfrac{1}{x_1}-4x_{2})}{\\partial x_2}=-4$$\n",
        "\t\tبنابراین داریم\n",
        "\t\t$$\\nabla f=(-\\dfrac{1}{x_1^2},-4)^T$$\n",
        "\n",
        "همچنین می توانیم این بردار را با پایتون محاسبه کنیم.\n",
        "\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "TafXiVI7jkAE"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "x, y = symbols('x y')\n",
        "expr = (1/x)-4*y\n",
        "[expr.diff(xi) for xi in [x,y]]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "YMMq7t9NQojr",
        "outputId": "2db0a5ed-51fb-4513-8b3b-1796e80d594a"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[-1/x**2, -4]"
            ]
          },
          "metadata": {},
          "execution_count": 3
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>3.2.قاعده زنجیره ای</font>\n",
        "<br>\n",
        "فرض کنید\n",
        "$z=f(x,y)$\n",
        "با مشتقات جزئی مرتبه اول پیوسته و \n",
        "x و y\n",
        "توابعی مشتق پذیر برحسب t و s باشند آنگاه طبق قاعده زنجیره ای داریم:\n",
        "\n",
        "$$\n",
        "\\frac{∂z}{∂t} = \\frac{∂z}{∂x}.\\frac{∂x}{∂t}+\\frac{∂z}{∂y}.\\frac{∂y}{∂t}\n",
        "$$\n",
        "\n",
        "$$\n",
        "\\frac{∂z}{∂s} = \\frac{∂z}{∂x}.\\frac{∂x}{∂s}+\\frac{∂z}{∂y}.\\frac{∂y}{∂s}\n",
        "$$\n",
        "\n",
        "<div>\n",
        "<center>\n",
        "<img src=\"https://i.stack.imgur.com/1FOMQ.png\" width=\"300\">\n",
        "</center>\n",
        "</div>\n",
        "\n",
        "در بخش بعد برهان صوری تری از این حالت ساده ولی نماینده قائده زنجیره ای داده خواهد شد .\n",
        "دو معادله ی فوق را میتوان در معادله ماتریسی زیر گنجاند .\n",
        "\n",
        "$$\n",
        "\\left( \\begin{array}{c} \\frac{∂z}{∂s} & \\frac{∂z}{∂t} \\end{array} \\right) = \\left( \\begin{array}{c} \\frac{∂z}{∂x} & \\frac{∂z}{∂y} \\end{array} \\right)\\left( \\begin{array}{cc} \\frac{∂x}{∂s}& \\frac{∂x}{∂t} \\\\\n",
        "\\frac{∂y}{∂s} & \\frac{∂y}{∂t} \\end{array} \\right)\n",
        "$$\n",
        "به طور کلی ،هرگاه z تابعی از چند متغیر اولیه باشد . هر یک از این متغیر ها تابع چند متغیر ثانیه باشد  ، آنگاه مشتق جزئی z نسبت به یکی از متغیر های ثانویه چند جمله دارد که به ازای هر متغیر ثانویه که z تابع آن است یک جمله  برای شرکت در مشتق ظاهر می شود .\n",
        "\n",
        "مثال) اگر\n",
        "$w = z(u,v,r)$\n",
        "و u و v برحسب x,y,r باشند و r تابعی برحسب x,y باشد در این صورت\n",
        "$\\frac{∂z}{∂x}$\n",
        "را به صورت زیر محاسبه می کنیم:\n",
        "\n",
        "$$\n",
        "\\frac{∂z}{∂x} = \\frac{∂z}{∂u}.\\frac{∂u}{∂x}+\\frac{∂z}{∂u}.\\frac{∂u}{∂r}.\\frac{∂r}{∂x}+\\frac{∂z}{∂v}.\\frac{∂v}{∂x}+\\frac{∂z}{∂v}.\\frac{∂v}{∂r}.\\frac{∂r}{∂x}+\\frac{∂z}{∂r}.\\frac{∂r}{∂x}\n",
        "$$\n",
        "\n",
        "\n",
        "</div></font>"
      ],
      "metadata": {
        "id": "pHibIJcBjvqi"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>4.2.مشتقهای جهتی (Directional Derivative)</font>\n",
        "<br>\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "مشتقهای جزئی اول $f_1(a,b)$ و $f_2(a,b)$ میزانهای تغییر $f(x,y)$ در (a,b) را به دست می دهند که به ترتیب در جهتهای محورهای x و y مثبت سنجیده می شوند .جهت را می توان با یک بردار ناصفر (بردار یکه در بهترین راه) مشخص کرد . \n",
        "حال فرض کنیم $u = ui + uj$ یک بردار یکه باشد به طورکه $u^2 + v^2 = 1$ ، مشتق جهتی $f(x,y)$ در (a,b) در جهت u در صفحه xy سنجیده می شود .\n",
        "مشتق جهت‌دار با نمادهای زیر نشان داده می‌شود:\n",
        "$$D_uf(a,b) = \\lim_{h \\to 0^+}\\frac{f(a + hu,b+hv) - f(a,b)}{h} $$\n",
        "مشتق های جهتی در جهتهای موازی با محور های مختصات مستقیما با مشتق های جزئی اول داده می شوند : \n",
        "$$D_if(a,b) = f_1(a,b) $$\n",
        "$$D_j(a,b) = f_2(a,b) $$\n",
        "$$D_{-i}f(a,b) = -f_1(a,b)$$\n",
        "$$D_{-j}f(a,b) = -f_2(a,b)$$"
      ],
      "metadata": {
        "id": "IdmMz1ZjHJZy"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "![Directional Derivative.png]()"
      ],
      "metadata": {
        "id": "XQB4RXumVzcm"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=0.5><div dir=rtl>\n",
        "بردار یکه $u$ خط $L$ را بر(a,b) در قلمرو $f$ را معین میکند .\n",
        "صفحه قائم شامل $L$ نمودار $f$ را در منحنی $C$ فطع می کند که مماسش $T$ در $(a,b,f(a,b))$ دارای شیب $D_uf(a,b)$ است."
      ],
      "metadata": {
        "id": "mFlHx_sVWcEL"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>5.2.کاربرد گرادیان در یافتن مشتقهای جهتی</font>\n",
        "<br>\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "هرگاه $f$ در (a,b) مشتق پذیر باشد و $u = ui + uj$ برداری یکه باشد ، مشتق جهتی $f$ در جهت $u$ برابر است با : \n",
        "$$D_uf(a,b) = u\\bullet ∇f(a,b) $$\n"
      ],
      "metadata": {
        "id": "ie9Vs88oP2XJ"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "اگر$v$ یک بردار ناصفر باشد ، همیشه می توان با تقسیم $v$ بر طول آن ، یک بردار یکه در همان جهت به دست آورد . لذا ، مشتق جهتی $f$ در $(a,b)$ در جهت $v$ مساوی است با : \n",
        "$$D_{{v}/{|v|}}f(a,b) = \\frac{v}{|v|} \\bullet ∇f(a,b) $$\n",
        "\n",
        "مثال) میزان تغییر $f(x,y) = y^4 + 2xy^3 + x^2y^2$ در (0,1) در هر یک از جهت های زیر را بیابید : \n",
        "  \n",
        "  \n",
        "  الف) $i+2j$\n",
        "ب) $j+2i$\n",
        "ج)$3i$\n",
        "\n",
        "\n",
        "حل) داریم :\n",
        "$$ ∇f(x,y) = (2y^3 + 2xy^2)i + (4y^3 + 6xy^2 + 2x^2y)j$$, \n",
        "$$∇f(0,1) = 2i + 4j$$\n",
        "\n",
        "الف)مشتق جهتی $f$ در (0,1 ) در جهت $i+2j$ مساوی است با : \n",
        "$$\\frac{i+2j}{|i+2j|} \\bullet (2i+4j) = \\frac{2+8}{\\surd 5} = 2√5$$\n",
        "ملاحظه می کنیم که $i+2j$ در همان جهت $∇f(0,1)$ است در نتیجه مشتق حهتی مثبت و مساوی طول $∇f(0,1)$ است.\n",
        "\n",
        "\n",
        "ب) مشتق جهتی $f$ در (0,1) در جهت $j-2i$ مساوی است با : \n",
        "$$\\frac{-2i+j}{|-2i+j|}\\bullet (2i+4j) = \\frac {-4+4}{√5} = 0$$\n",
        "چون $j-2i$ بر $∇f(0,1)$ عمود است ، برمنحنی تراز$f$ روی (0,1) مماس است ؛ در نتیجه مشتق جهتی در آن جهت صفر است .\n",
        "\n",
        "پ)مشتق جهتی $f$ در (0,1) در جهت $3i$ مساوی است با : \n",
        "$$i \\bullet (2i+4j) = 2.$$\n",
        "همانطور که قبلا گفتیم ، مشتق جهتی $f $در جهت محور $x $ مثبت مساوی $f_1(0,1)$ است.\n"
      ],
      "metadata": {
        "id": "j6NriTu7ZM0B"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>6.2.تابع های ضمنی و دستگاه معادلات</font>\n",
        "<br>\n",
        "ابتدا با مثالی از دستگاه معادلات شروع می کنیم و و سپس به تعریف قضیه تابع ضمنی می پردازیم  :\n",
        "\n",
        "مثال) فرض کنید $x,y,u,v$ با معادلات زیر به هم مربوط شده باشند : \n",
        "$$\\left\\{ \\begin{array}{rcl}\n",
        "u = x^2 + xy -y^2 \\\\ v = 2xy +y^2 \n",
        "\\end{array}\\right.\n",
        "$$\n",
        "\n",
        "الف)$({{∂x}/{∂u}})_v$ و \n",
        "ب)\n",
        "$({{∂x}/{∂u}})_y$ \n",
        "  را در نقطه ای که $x = 2$ و $y=-1$ بیابید .\n",
        "  \n",
        "  \n",
        "  \n",
        "  حل)\n",
        "الف)برای محاسبه ی $(∂x/∂u)_v$ ،$x$ و $y $را اتوابعی از $u$ و $v$ گرفته و از معادلات داده شده نسبت به $u$ مشتق گرقته ،$v$ را ثابت می گیریم : \n",
        "$$1 = \\frac{∂u}{∂u} = (2x+y)\\frac{∂x}{∂u} + (x-2)\\frac{∂y}{∂u},$$\n",
        "$$0 = \\frac{∂v}{∂u} = 2y\\frac{∂x}{∂u} + (2x+2y)\\frac{∂y}{∂u}$$\n",
        "\n",
        "\n",
        "در$y=-1$ ،$x=2$ داریم \n",
        "$$1 = 3\\frac{∂x}{∂u} + 4\\frac{∂y}{∂u}$$\n",
        "$$0 = -2\\frac{∂x}{∂u} + 2\\frac{∂y}{∂u}$$\n",
        "با حذف\n",
        "$∂y/∂u$\n",
        "به نتیجه $({{∂x}/{∂u}})_v = 1/7$ می رسیم .\n",
        "  \n",
        "ب) برای محاسبه ی $({∂x}/{∂u})_y$ ، $x $و $v$ را به عنوان توابعی از $y$ و $u $گرفته و از معادلات داده شده با ثابت گرفتن $y$ نسبت به $u$ مشتق می گیریم \n",
        ": \n",
        "$$1 = \\frac{∂u}{∂u} = (2x+y)\\frac{∂x}{∂u} , $$\n",
        "\n",
        "\n",
        "\n",
        "$$\\frac{∂v}{∂u} = 2y\\frac{∂x}{∂u}$$\n",
        "در $y = -1$ ,$x =2$ معادله اول فورا نتیجه می دهد که $({{∂x}/{∂u}})_y = 1/3$.\n",
        "\n",
        "\n",
        " <font color=\"red\" size=5>7.2.قضیه تابع ضمنی</font>\n",
        "<br>\n",
        "مثال )\n",
        "دستگاه معادلات خطی زیر را در نظر میگیریم : \n",
        "$$F(x,y,s,t) = a_1x + b_1y + c_1s + d_1t + e_1 = 0,$$\n",
        "$$G(x,y,s,t) = a_2x + b_2y + c_2s + d_2t + e_2 = 0 .$$\n",
        "این دستگاه را می توان به شکل ماتریسی نوشت : \n",
        "$$A\\begin{pmatrix}\n",
        "     x \\\\ \n",
        "     y \n",
        "\\end{pmatrix} + C\\begin{pmatrix}\n",
        "     s \\\\ \n",
        "     t \n",
        "\\end{pmatrix}  +\\varepsilon  = \\begin{pmatrix}\n",
        "     0 \\\\ \n",
        "     0 \n",
        "\\end{pmatrix}$$\n",
        "که در آن\n",
        "$$\\varepsilon =\\begin{pmatrix}\n",
        "     e_1 \\\\ \n",
        "     e_2\n",
        "\\end{pmatrix} , C = \\begin{pmatrix}\n",
        "     c_1 & d_1 \\\\ \n",
        "     c_2 & d_2\n",
        "\\end{pmatrix} , A = \\begin{pmatrix}\n",
        "     a_1 & b_1 \\\\ \n",
        "     a_2 & b_2\n",
        "\\end{pmatrix} $$\n",
        "معادلات را می توان نسبت به $x $ و $y$ به عنوان توابعی از $s$ و $t $ حل کرد مشروط براینکه $\\det (A)  \\neq 0$\n",
        "، زیرا این وجود ماتریس معکوس $A^{-1}$ را اینجاب می کند ؛\n",
        "پس : \n",
        "$$\\begin{pmatrix}\n",
        "     x \\\\ \n",
        "     y\n",
        "\\end{pmatrix} =  -A^{-1}\\begin{pmatrix}\n",
        "     C\\begin{pmatrix}\n",
        "     s \\\\ \n",
        "     t\n",
        "\\end{pmatrix} + ɛ\n",
        "\\end{pmatrix} $$\n",
        "ملاحظه می کنیم که $\\det (A) = ∂(F,G)/∂(x,y)$ ؛ در نتیجه صقر نشدن این ژاکوبین حل معادلات نسبت به $x$ و $y $ را تضمین خواهد کرد . \n",
        "\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n"
      ],
      "metadata": {
        "id": "cdmhBOxUl7iz"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>8.2.ماتریس ژاکوبی (Jacobian matrix)</font>\n",
        "<br>\n",
        "فرض کنید تابع $ f : R^n \\rightarrow R^m$ با مقادیر $[f_1(x)(x_1 ... x_n), ... , f_m(x)(x_1...x_n)]$ وجود دارد. به ماتریسی که از مشتق این تابع در هر نقطه از $x_1$ تا  $x_n$ تشکیل شده ماتریس ژاکوبی گفته می شود که برابر است با : \n",
        "\n",
        "$$\n",
        "\\mathbb{J}=\\left[\\begin{array}{ccc}\n",
        "\\dfrac{\\partial \\mathbf{f}(\\mathbf{x})}{\\partial x_{1}} & \\cdots & \\dfrac{\\partial \\mathbf{f}(\\mathbf{x})}{\\partial x_{n}}\n",
        "\\end{array}\\right]=\\left[\\begin{array}{c}\n",
        "\\nabla^{T} f_{1}(\\mathbf{x}) \\\\\n",
        "\\vdots \\\\\n",
        "\\nabla^{T} f_{m}(\\mathbf{x})\n",
        "\\end{array}\\right]=\\left[\\begin{array}{ccc}\n",
        "\\dfrac{\\partial f_{1}(\\mathbf{x})}{\\partial x_{1}} & \\cdots & \\dfrac{\\partial f_{1}(\\mathbf{x})}{\\partial x_{n}} \\\\\n",
        "\\vdots & \\ddots & \\vdots \\\\\n",
        "\\dfrac{\\partial f_{m}(\\mathbf{x})}{\\partial x_{1}} & \\cdots & \\dfrac{\\partial f_{m}(\\mathbf{x})}{\\partial x_{n}}\n",
        "\\end{array}\\right]\n",
        "$$\n",
        "بنابراین : \n",
        "$$\\mathbb{J}_{i,j}=\\dfrac{\\partial f_{i}(\\mathbf{x})}{\\partial x_{j}}$$\n",
        "  \n",
        "  \n",
        "( $∇f = \\mathbb{J}^T_f$  Where , $m = 1$ )\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "دترمینان ژاکوبین دو تابع $u = u(x,y)$ و $v= v(x,y)$ نسبت به دو متغیر $x $ و $y $ دترمینان زیر است : \n",
        "$$\\frac{∂(u,v)}{∂(x,y)} = \\begin{vmatrix}\n",
        "      \\frac{∂u}{∂x}&  \\frac{∂u}{∂y} \\\\ \n",
        "      \\frac{∂v}{∂x} &  \\frac{∂v}{∂y}  \n",
        "\\end{vmatrix}$$\n",
        "به همین نحو ، ژاکوبین دو تابع $F(x,y,...)$ و $G(x,y,...)$ نسبت به متغیر های $x$ و $y$ دترمینان زیر می باشد : \n",
        "$$\\frac{∂(F,G)}{∂(x,y)} = \\begin{vmatrix}\n",
        "      \\frac{∂F}{∂x}&  \\frac{∂F}{∂y} \\\\ \n",
        "      \\frac{∂G}{∂x} &  \\frac{∂G}{∂y}  \n",
        "\\end{vmatrix} = \\begin{vmatrix}\n",
        "      F_1&F_2\\\\ \n",
        "     G_1 & G_2  \n",
        "\\end{vmatrix}$$\n",
        "\n"
      ],
      "metadata": {
        "id": "GJaCl0RZgthN"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>9.2.ماتریس هسین (Hessian matrix)</font>\n",
        "<br>\n",
        "\n",
        "فرض کنید تابع $ f : R^n \\rightarrow R$ داریم ، اگر تمام مشتقات جزئی دوم f وجود داشته باشد آنگاه ماتریس هسین H از f برابر است با :\n",
        "$$(HF_{i,j}) = \\dfrac{\\partial^2 \\mathbf{f}(\\mathbf{x})}{\\partial x_{i}  ∂ x_{j}}$$\n",
        "ماتریس هسین یک ماتریس متقارن است، از آنجا که طبق فرض مشتقات مرتبه دوم تابع مورد نظر پیوسته اند، نتیجه می شود که ترتیب دیفرانسیل گیری اهمیتی نخواهد داشت (قضیه شوارتز)."
      ],
      "metadata": {
        "id": "LMtOWYYmpgrL"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>10.2.مقادیر اکستریم (Extreme Values)</font>\n",
        "<br>\n",
        "![extreme1.png]()"
      ],
      "metadata": {
        "id": "0mXthDuf2R5k"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl> \n",
        "تابع $f(x,y) = x^2 + y^2$\n",
        "، دارای مقدار مینیمم 0 است ؛ این مقدار در (0,0) رخ میدهد که در آن نمودار دارای صفحه مماس افقی است ."
      ],
      "metadata": {
        "id": "wgg4Gha13Zhk"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "![extreme2.png]()"
      ],
      "metadata": {
        "id": "lWp75OIF4A4E"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "به همین نحو تابع بالا دارای مقدار ماکزیمم 1 در (0,0) است .\n",
        "یافتن مقدار ماکزیمم و مینیمم توابع چند متغیره ، مانند توابع یک متغیره ، اسا بسیاری از کاربرد های حساب دیفرانسیل و انتگرال پیشرفته  ر مسائلی است که در سایر نظامها ظاهر می شود . \n",
        "بحث را با مرور آنچه از حالت یک متغیره می دانیم آغاز می کنیم ، تابع $f(x)$ در نقطه a در قلمروش دارای مقدار ماکزیمم موضعی(یا مقدار مینیمم موضعی)\n",
        "است اگر به ازای هر $x$ در قلمرو $f$ که به قدر کافی نزدیک $x  $ باشد $f(x) \\le f(a)$ (یا $f(x) \\geq f(a)$).\n",
        "هرگاه نامساوی مربوطه به ازای هر $x$ در قلمرو $f $ برقرار باشد ، آنگاه می گوییم $f $دارای مقدار ماکزیمم مطلق (یا مینیمم مطلق)\n",
        "در $a$ است .به علاوه این مقدار اکستریم موضعی یا مطلق می توانند فقط در نقاطی از یکی از سه نوع زیر رخ دهند :\n",
        "\n",
        "الف) نقاط بحرانی، که $f’ (x) = 0$\n",
        "\n",
        "\n",
        "\n",
        "ب)نقاط منفرد ، که $f’ (x)$ موجود نیست ؛ یا \n",
        "\n",
        "\n",
        "پ)نقاط انتهایی قلمرو $f$\n",
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "برای توابع چند متغیره نیز وضعیت مشابهی برقرار است .\n",
        "\n",
        "\n",
        "<font color=\"red\" size=4 >شرایط لازم برای مقادیر اکستریم </font>\n",
        "<br>\n",
        "تابع $f(x,y)$ فقط وقتی می تواند در نقطه (a,b) از قلمرو خود مقدار اکستریم مطلق داشته باشد که $(a,b)$ به یکی از صورت های زیر باشد : \n",
        "\n",
        "الف) یک نقطه ی بحرانی $f$ یعنی یک نقطه صادق در $∇f(a,b) = 0$ ؛\n",
        "\n",
        "ب)یک نقطه منفرد $f$ یعنی نقطه ای که در آن $∇f(a,b)$ وجود ندارد ؛یا \n",
        "\n",
        "پ)یک نقطه مرزی قلمرو $f$\n",
        "\n",
        "\n",
        "<font color=\"red\" size=4 >شرایط کافی برای مقادیر اکستریم </font>\n",
        "<br>\n",
        "\n",
        "هرگاه $f$ یک تابع $n $ متغیره پیوسته باشد که قلمروش یک مجموعه بسته و کراندار در$\\mathbb{R}^n$است ،آنگاه برد $f$ یک مجموعه کراندار از اعداد حقیقی است و نقاطی در قلمرو آن وجود دارند که در آنها $f $ مقادیر ماکزیمم ومینیمم مطلق را می گیرد . \n",
        "\n",
        "\n",
        "\n",
        "مثال ) تابع $f(x,y) = x^2 + y^2 $ در (0,0) \n",
        "نقطه بحرانی دارد زیرا $∇f = 2xi + 2yj$ و هر دو مولفه $∇f$ در (0,0) صفر می شوند چون \n",
        "$$f(x,y) > 0 = f(0,0) ، (x,y) \\neq (0,0)     به   ازای $$  \n",
        "$f$ باید در این نقطه مقدار مینیمم (مطلق) 0 داشته باشد . اگر قلمرو $f$ محدود نشود ، $f$ مقدار ماکزیمم ندارد . به همین نحو ، $g(x,y) = 1-x^2-y^2$\n",
        "دارای مقدار ماکزیمم (مطلق) 1 در نقطه بحرانی (0,0) می باشد . "
      ],
      "metadata": {
        "id": "81xyPtS44NQg"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>11.2.ضرایب لاگرانژ</font>\n",
        "<br>\n",
        "یک روش یافتن مقادیر اکستریم $f(x,y)$ تحت قید تساوی $g(x,y) = 0 $بر قضیه زیر استوار است : \n",
        "\n",
        "فرض کنیم $f$ و $g $ در مجاورت نقطه $P_0 = (x_0 , y_0)$ روی منحنی $C$ به معادله $g(x,y) = 0$ مشتقهای چزئی اول پیوسته داشته باشند .\n",
        "همچنین ، وقتی به نقاط روی $C$ محدود شویم ،تابع $f(x,y)$ در $P_0$ مقدار ماکزیمم یا مینیمم موضعی داشته باشد و  1) $P_0$ یک نقطه ی انتهایی C نباشد و 2) $∇g(P_0) \\neq 0   $\n",
        "\n",
        "\n",
        "در این صورت عددی مانند $λ_0$ هست به طوریکه $(x_0 , y_0 , λ_0)$ یک نقطه بحرانی تابع لاگرانژین \n",
        "\n",
        "$$L(x,y,λ) = f(x,y) + λg(x,y)$$\n",
        "\n",
        "می باشد .\n",
        "\n",
        "\n",
        "این قضیه پیشنهاد می کند که برای یافتن نقاط روی منحنی $g(x,y) = 0$ که $f(x,y)$ در آنها ماکزیمم یا مینیمم است باید نقاط بحرانی تابع لاگرانژین $L(x,y,λ) = f(x,y) + λg(x,y)$ را  جستجو نماییم . در هر نقطه بحرانی $L$ باید داشته باشیم  : \n",
        "\n",
        "\n",
        "$$\\left\\{ \\begin{array}{rcl}\n",
        " 0 = \\frac {∂L}{∂x} = f_1(x,y) + λg_1(x,y) \\\\\n",
        " 0 = \\frac {∂L}{∂y} = f_2(x,y) + λg_2(x,y)\n",
        "\\end{array}\\right.$$\n",
        "یعنی $∇f$ موازی $∇g$ است .\n",
        "\n",
        "$$(معادله قید) = \\frac {∂L}{∂λ} = g(x,y)$$\n",
        "\n",
        "اما فرض است که مسئله مقید دارای جواب است ، این قضیه وجود جواب را تضمین نمی کند ؛ تنها یک روش برای یافتن جواب که از قبل وجودش معلوم است به دست می دهد . معمولا باید پیش از به کار گیری این روش برای یافتن جواب از وجود آن مطمعن شوید ."
      ],
      "metadata": {
        "id": "6QjDnBPzTUFd"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "<font face=\"XB Zar\" size=4><div dir=rtl>\n",
        "<font color=\"red\" size=5>منابع  </font>\n",
        "<br>\n",
        "1. حساب دیفرانسیل و انتگرال و هندسه تحلیلی نوشته ی آر.ای.آدامز\n",
        "2. [فصل دوم کتاب Dive Into Deep Learning](https://d2l.ai/chapter_preliminaries/linear-algebra.html)\n",
        "3. [جزوه ریاضیات برای یادگیری ماشین دانشگاه Berkely](https://gwthomas.github.io/docs/math4ml.pdf)\n"
      ],
      "metadata": {
        "id": "ENdiQ0_RjCwV"
      }
    }
  ]
}